/**
 * 两数之和
 * 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数，并返回他们数组的下标。
 * 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍
 * 你可以按任意顺序返回答案
 * 示例1:
 *  输入: nums = [2, 7, 11, 15], target = 9;
 *  输出: [0, 1]
 *  解释: 因为nums[0] + nums[1] === 9, 返回[0, 1]
 * 示例2:
 *  输入: nums = [3, 2, 4], target = 6;
 *  输出: [1, 2]
 * 示例3:
 *  输入: nums = [3, 3], target = 6;
 *  输出: [0, 1]
*/

function twoSum (nums, target) {
    // 先建立一个对象
    const obj = {};
    // 遍历一遍数组为对象赋值
    for (let i = 0; i < nums.length; i++) {
        obj[nums[i]] = i;
    }
    // 再次遍历一遍数组找出对应的值
    for (let i = 0; i < nums.length; i++) {
        if (obj[target - nums[i]]) {
            return [i, obj[target - nums[i]]]
        }
    }
    return [];
}

console.log(twoSum([2, 7, 11, 15], 9));
console.log(twoSum([3, 2, 4], 6))
console.log(twoSum([3, 3], 6))